Nodarama Go Custom GPT Agent Scripts

INDEX
@@ Line 8 @@ Instructions for your Custom GPT
@@ Line 58 @@ Custom Actions Script : fill in ngrock or similar web address
@@ Line 278 @@ Setting up a direct link between Verbatim and ChatGPT via AMP 

@@@@ Instructions: Place these in the instructions section of your configure custom GPT section

Role: Coordination and planning agent for a custom software execution system.

Required Behavior:
Answer questions in brief plain English with approach or recommendation.
Treat user instructions as execution requests unless clarification is required.
Treat user questions as discussion requests and show code only when explicitly requested.
Use short numbered summaries in chat for complex changes.
Keep chat brief, point-form, and specifically referenced.
Reference files, functions, methods, selectors, imports, exports, components, or node names without displaying full code.
Example: We will change [specificFunctionName] so that it leverages [otherTaskName] earlier in execution.

Review Style:
Use brief numbered lists in chat for process summaries.
Keep review steps short, concise, and reference-marked.

Grounding:
Prefer live code validation over memory references.
Re-scan relevant files as needed.
Locate relevant source before proposing changes to visible UI text, behavior, layout, wiring, imports, exports, or runtime flow.

Manifest Actions:
Manifest actions define what code change the recorder should perform.
Use manifest actions only for write, replace, insert, and other valid recorder-supported code changes.
Use only valid manifest actions, fields, payloads, and schema shapes defined by the current manifest reference.

Bridge Actions:
Bridge actions define how the GPT interacts with the live system.
Use bridge actions to read files, submit manifests, and inspect logs.
Use bridge read actions for validation and live inspection before proposing or sending changes.
Use bridge execution actions only to send valid manifest-based changes through the recorder.
Treat bridge actions as the transport layer and manifest actions as the code-change contract.

Execution Behavior:
Use manifest format for all system code changes.
Keep execution output specific, surgical, and actionable.
Prefer the simplest valid edit method first, defined by the least amount of code changed.
Preserve existing input and output boundaries unless otherwise requested.
Prefer edits by exact string, replace-all, bounded block, or top-level function before full rewrites.
When a full rewrite is required, include a summary of import and export changes.
Use only valid actions, fields, payloads, and schema shapes.

Prohibited Behavior:
Do not show code in chat unless explicitly requested.
Do not trust remembered code without validation.
Do not use high confidence without grounded evidence.
Do not emit vague or non-executable structured output.
Do not improvise invalid actions, fields, payloads, or schema shapes.

@@@@ Actions

openapi: 3.1.0
info:
  title: Nodarama EQ + Recorder Runtime API
  version: 1.1.2
  description: |
    Runtime API aligned to the current live system.
    All file changes should go through /record so execution, logging, tape, and diagnostics stay unified.
    Structural recorder actions are preferred over full-file rewrites.
    Every recorder manifest must include Task as a brief user-facing title.

servers:
  - url: [enter your ngrok or similar tunnel link]

security:
  - AmpToken: []

paths:
  /read/file:
    post:
      operationId: readProjectFiles
      summary: Read file contents from the project
      security:
        - AmpToken: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                path:
                  type: string
                FilePath:
                  type: string
                paths:
                  type: array
                  items:
                    type: string
              additionalProperties: false
      responses:
        "200":
          description: File read results
        "401":
          description: Unauthorized

  /record:
    post:
      operationId: recordManifestPayload
      summary: Execute one recorder manifest immediately
      security:
        - AmpToken: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/LiveManifest"
      responses:
        "200":
          description: Manifest accepted for immediate execution
        "401":
          description: Unauthorized

  /logs/system:
    get:
      operationId: readSystemLog
      summary: Read system log lines
      security:
        - AmpToken: []
      responses:
        "200":
          description: System log results
        "401":
          description: Unauthorized

  /logs/ai:
    get:
      operationId: readAILog
      summary: Read AI log lines
      security:
        - AmpToken: []
      responses:
        "200":
          description: AI log results
        "401":
          description: Unauthorized

  /logs/code:
    get:
      operationId: readCodeLog
      summary: Read code log lines
      security:
        - AmpToken: []
      responses:
        "200":
          description: Code log results
        "401":
          description: Unauthorized

components:
  securitySchemes:
    AmpToken:
      type: apiKey
      in: header
      name: x-amp-token

  schemas:
    LiveManifest:
      type: object
      properties:
        Task:
          type: string
          minLength: 1
          description: >
            Required brief user-facing task title describing the intended change or outcome.
            Do not use only the recorder Action or only the FilePath.
            Good: "Restore monitor startup initialization".
            Bad: "replacestring".
        Action:
          type: string
          enum:
            - replacestring
            - replaceall
            - replacefunction
            - replaceblock
            - insertbefore
            - insertafter
            - newfile
            - rewritefile
        FilePath:
          type: string
          minLength: 1
        Payload:
          oneOf:
            - type: string
            - $ref: "#/components/schemas/ManifestPayload"
        Comment:
          type:
            - string
            - "null"
      required:
        - Task
        - Action
        - FilePath
        - Payload
      additionalProperties: true

    ManifestPayload:
      type: object
      properties:
        target:
          type: string
        replacement:
          type: string
        start:
          type: string
        end:
          type: string
        find:
          type: string
        content:
          type: string
      additionalProperties: true
      description: |
        Action payload shape:
        - replacestring: target, replacement
        - replaceall: target, replacement
        - replacefunction: start, replacement
        - replaceblock: start, end, replacement
        - insertbefore: find, content
        - insertafter: find, content
        - newfile: string payload
        - rewritefile: string payload

    CorrectionReply:
      type: object
      properties:
        correction:
          type: object
          properties:
            Task:
              type: string
              minLength: 1
            FilePath:
              type: string
              minLength: 1
            Action:
              type: string
              enum:
                - replacestring
                - replaceall
                - replacefunction
                - replaceblock
                - insertbefore
                - insertafter
                - newfile
                - rewritefile
            Payload:
              oneOf:
                - type: string
                - $ref: "#/components/schemas/ManifestPayload"
            Comment:
              type:
                - string
                - "null"
          required:
            - Task
            - Action
            - FilePath
            - Payload
          additionalProperties: false
      required:
        - correction
      additionalProperties: false

      ## Connect Nodarama Go to Verbatim


@@@@ Setting up AMP, so ChatGPT can connect directly to Verbatim


You will create your own private AMP API key.

This key connects your Custom GPT to the Verbatim app running on your computer.

## Step 1 — Create your API key

Make up a private key phrase.

Example:

`my-private-verbatim-key-123`

Use something only you know. Do not share it publicly.

## Step 2 — Save the key in Verbatim

On your computer, open this file:

`C:\NV\settings\user.json`

Add this section:

```json id="grmh9h"
{
  "bridgeAuth": {
    "apiKey": "my-private-verbatim-key-123"
  }
}
```

Use your own key, not the example.

Save the file.

Restart Verbatim.

## Step 3 — Set up the Custom GPT Action

In your Custom GPT setup:

1. Go to **Actions**
2. Add the Nodarama Go action script
3. Set the server URL to your Verbatim bridge URL
4. Go to **Authentication**
5. Select **API Key**
6. Select **Custom**
7. For the custom header name, enter exactly:

`x-amp-token`

8. For the API key value, enter the same key you saved in:

`C:\NV\settings\user.json`

9. Save the GPT

## What happens

Your Custom GPT sends the key to Verbatim using:

`x-amp-token`

Verbatim checks it against your local file:

`C:\NV\settings\user.json`

If both keys match, Nodarama Go can connect to Verbatim.
